Data read out from a nonvolatile semiconductor memory is normally converted into an LLR (Log-Likelihood Ratio) in accordance with a pre-created table called an LLR table, and undergoes error correction. The likelihood of write data (i.e., a correct bit value) with respect to readout data changes in accordance with stress on a storage area of the readout data.
Even when a plurality of LLR tables optimized for a plurality of typical stresses (e.g., PD (Program Disturb), DR (Data Retention), and RD (Read Disturb) are pre-created, it is difficult to adapt the tables to all of various stresses that can be applied to memory cells of a nonvolatile semiconductor memory. That is, even when a plurality of LLR tables are pre-created, it may be impossible to suppress deterioration of the error correctability under a given unexpected stress (e.g., a composite stress of the DR stress and RD stress).